Customers of a computing resource service provider may reduce expenses and overhead by using remote program execution and remote data storage services provided by the computing resource service provider. Customer applications may be distributed over multiple virtual machine instances and computing systems such as server computer systems. In addition, these computing systems may include various block-level storage devices and other computing devices that may be used to provide computing resources to customers. In distributed computing environments, however, scalability, availability, durability, and performance are complex problems to solve, especially as the number of computing devices involved increases. Moreover, many distributed computer systems utilize mechanisms to increase efficiency and utilization of these computing resources. These mechanisms may add to the complexity and structure of these distributed computing environments providing computing resources to customers. Further adding to the complexity are differences in devices, such as different disk drives and, generally, differences that introduce additional factors to be taken into account when managing such distributed computing systems. As a result, maintaining scalability, availability, durability, and performance in distributed computing environments with heterogeneous computing resources that utilize mechanisms to increase efficiency and utilization of the computing resources is difficult and complex. In addition, this difficulty and complexity increases with the size of these distributed computing resource environments.